package de.dhbw.karlsruhe.picsim.gui.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jetbrains.annotations.NonNls;

import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;

/**
 * Created by IntelliJ IDEA.
 * User: user
 * Date: May 2, 2010
 * Time: 3:13:24 PM
 */

/**
 * Lauschen auf Veränderungen an Textfeldern ist in Java etwas umständlich.
 * Diese Klasse macht es ein wenig übersichtlicher, da nur @see #handleTextChange(String)
 * implementiert werden muss
 */
public abstract class DocumentAdapter implements DocumentListener {
    private static final Log log = LogFactory.getLog(DocumentAdapter.class);

    @Override
    public void changedUpdate(DocumentEvent e) {
        handleEvent(e);

    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        handleEvent(e);

    }

    @Override
    public void removeUpdate(DocumentEvent e) {
        handleEvent(e);

    }

    protected abstract void handleTextChange(@NonNls String newText);

    private void handleEvent(DocumentEvent e) {
        try {
            final Document document = e.getDocument();
            final String newText = document.getText(0, document.getLength());
            handleTextChange(newText);
        } catch (BadLocationException e1) {
            log.error(e1);
        }
    }
}
